////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                            //
//                                                         WNProject                                                          //
//                                                                                                                            //
//            This file is distributed under the BSD 2-Clause open source license. See License.txt for details.               //
//                                                                                                                            //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#pragma once

#ifndef __WN_SCRIPTING_SCRIPT_DEFINED_ELEMENT_H__
#define __WN_SCRIPTING_SCRIPT_DEFINED_ELEMENT_H__

#include "WNScripting/inc/WNIdentifierMap.h"
#include "WNScripting/inc/WNTypeManager.h"
namespace WNScripting {
    enum WNScriptDefinedElementType {
        eWNScriptFunction,
        eWNScriptStruct,
        eWNScriptInclude
    };

    struct WNScriptDefinedElement {
        WNScriptDefinedElementType mType;
        WNIdentifierElement mGlobalIdentifier;
        WNIdentifierElement mFileName;
        WNIdentifierElement mIncludeName;
        WN_SIZE_T mLineNumber;
        WN_SIZE_T mOffset;
        WN_SIZE_T mEndOffset;
        WNTypeElement mReturnType;
        WN_BOOL mOnStack;
        std::vector<WNTypeElement> mArguments;
        std::vector<WNIdentifierElement> mArgumentNames;
    };
}

#endif // __WN_SCRIPTING_SCRIPT_DEFINED_ELEMENT_H__